#ifndef NIKONNOSEPIECE_H
#define NIKONNOSEPIECE_H

#include <QObject>
#include <QAxObject>
#include <QTimer>

class NosepieceNikon : public QObject
{
    Q_OBJECT
public:
    explicit NosepieceNikon(QObject *parent = 0);
    ~NosepieceNikon();
    /**
     * @brief isMounted 查询是否安装了电动物镜转盘
     * @return true 表示安装了安装了电动物镜转盘
     */
    bool isMounted();
signals:
    /**
     * @brief lensChanged 物镜改变时发出这个信号
     * @param oldLens 原来的物镜， 从 0 开始
     * @param newLens 新的物镜， 从 0 开始
     */
    void lensChanged(int oldLens, int newLens);
public slots:
    /**
     * @brief setLens 设置物镜转盘转到第 n 个物镜位置
     * @param n n 为 从 0 到 4 数字分别代表第 1 个到 第 5 个物镜
     */
    void setLens(int n);
    /**
     * @brief setLens 设置物镜转盘转到第 n 个物镜位置
     * @param oldLens 当前物镜的位置，从 0 开始
     * @param newLens 新物镜，从 0 开始
     */
    void setLens(int oldLens, int newLens);
    /**
     * @brief forward 切换到下一个物镜
     */
    void forward();
    /**
     * @brief reverse 切换到上一个物镜
     */
    void reverse();
private slots:
    void on_timer();
private:
    QAxObject *m_nikon;
    QAxObject *m_nosepiece;
    QTimer *m_timer;
    int m_lens;
};

#endif // NIKONNOSEPIECE_H
